---
title: "submit_appworx_job stored procedure documentation"
summary: "Analysis of the retrieved Oracle procedure including business rules, operations, and source code."
status: draft
owner: "SAIF Claims BOF team"
last_reviewed: "2026-08-25"
source_schema: "WCIS_DBA"
source_name: "submit_appworx_job"
source_type: "PROCEDURE"
retrieval_status: "found"
retrieval_command: "legends oracle query --name submit_appworx_job"
retrieval_date: "2026-08-25"
---
# submit_appworx_job

## Overview

| Field | Value |
| --- | --- |
| **Schema** | `WCIS_DBA` |
| **Type** | Standalone procedure |
| **Database** | Oracle |
| **Calling libraries** | `SAIF.Services.Appworx` |
| **Calling classes** | `clsRequestAppworxJob` |

## Purpose

`submit_appworx_job` enqueues an Appworx request by allocating a new `JOBID` from `SO_MAX_JOBID`, inserting one row into `JOB_QUEUE`, and persisting the submitted module, requestor, and 20 positional argument slots. The retrieved body accepts `inprinter` in the signature but does not reference that parameter in the executable statements.

## Procedures / Methods

### submit_appworx_job

| Field | Value |
| --- | --- |
| **Returns** | No return value |
| **Called by** | `clsRequestAppworxJob.SubmitBatchJob()`<br>`clsRequestAppworxJob.SubmitBatchJob(...)` |
| **Description** | Allocates a queue job ID, inserts one `JOB_QUEUE` row, ignores `NO_DATA_FOUND`, and re-raises all other exceptions. |

#### Parameters

| Parameter | Direction | Type | Default | Description |
| --- | --- | --- | --- | --- |
| `inmodule` | IN | `VARCHAR2` | — | Module name written to `JOB_QUEUE.MODULE`. |
| `inrequestor` | IN | `VARCHAR2` | — | Requestor value written to `JOB_QUEUE.REQUESTOR`. |
| `inprinter` | IN | `VARCHAR2` | — | Accepted by the procedure signature but not referenced in the retrieved body. |
| `inarg1` | IN | `VARCHAR2` | `''` | Value written to `JOB_QUEUE.ARG_1`. |
| `inarg2` | IN | `VARCHAR2` | `''` | Value written to `JOB_QUEUE.ARG_2`. |
| `inarg3` | IN | `VARCHAR2` | `''` | Value written to `JOB_QUEUE.ARG_3`. |
| `inarg4` | IN | `VARCHAR2` | `''` | Value written to `JOB_QUEUE.ARG_4`. |
| `inarg5` | IN | `VARCHAR2` | `''` | Value written to `JOB_QUEUE.ARG_5`. |
| `inarg6` | IN | `VARCHAR2` | `''` | Value written to `JOB_QUEUE.ARG_6`. |
| `inarg7` | IN | `VARCHAR2` | `''` | Value written to `JOB_QUEUE.ARG_7`. |
| `inarg8` | IN | `VARCHAR2` | `''` | Value written to `JOB_QUEUE.ARG_8`. |
| `inarg9` | IN | `VARCHAR2` | `''` | Value written to `JOB_QUEUE.ARG_9`. |
| `inarg10` | IN | `VARCHAR2` | `''` | Value written to `JOB_QUEUE.ARG_10`. |
| `inarg11` | IN | `VARCHAR2` | `''` | Value written to `JOB_QUEUE.ARG_11`. |
| `inarg12` | IN | `VARCHAR2` | `''` | Value written to `JOB_QUEUE.ARG_12`. |
| `inarg13` | IN | `VARCHAR2` | `''` | Value written to `JOB_QUEUE.ARG_13`. |
| `inarg14` | IN | `VARCHAR2` | `''` | Value written to `JOB_QUEUE.ARG_14`. |
| `inarg15` | IN | `VARCHAR2` | `''` | Value written to `JOB_QUEUE.ARG_15`. |
| `inarg16` | IN | `VARCHAR2` | `''` | Value written to `JOB_QUEUE.ARG_16`. |
| `inarg17` | IN | `VARCHAR2` | `''` | Value written to `JOB_QUEUE.ARG_17`. |
| `inarg18` | IN | `VARCHAR2` | `''` | Value written to `JOB_QUEUE.ARG_18`. |
| `inarg19` | IN | `VARCHAR2` | `''` | Value written to `JOB_QUEUE.ARG_19`. |
| `inarg20` | IN | `VARCHAR2` | `''` | Value written to `JOB_QUEUE.ARG_20`. |

## Business Rules

The retrieved Oracle procedure body embeds the following server-side rules.

| Rule ID | Summary |
| --- | --- |
| [BR-APX-005](#br-apx-005-job-id-comes-from-so_max_jobid-sequence) | Every execution assigns `JOB_QUEUE.JOBID` from `SO_MAX_JOBID.NEXTVAL`. |
| [BR-APX-006](#br-apx-006-queue-rows-use-a-fixed-master_job_number) | Every inserted row uses a fixed `MASTER_JOB_NUMBER` value of `-1`. |
| [BR-APX-007](#br-apx-007-optional-arguments-default-to-empty-strings) | `inarg1` through `inarg20` default to `''` when callers omit them. |
| [BR-APX-008](#br-apx-008-no_data_found-is-ignored) | `NO_DATA_FOUND` is swallowed without raising an error to the caller. |
| [BR-APX-009](#br-apx-009-other-exceptions-are-re-raised) | All non-`NO_DATA_FOUND` exceptions are re-raised. |

### BR-APX-005 Job ID comes from so_max_jobid sequence

| Field | Value |
| --- | --- |
| **Statement** | Each execution selects `SO_MAX_JOBID.NEXTVAL` into `v_jobid` and inserts that value into `JOB_QUEUE.JOBID`. |
| **Trigger** | Procedure execution. |
| **Enforcement** | `SELECT so_max_jobid.NEXTVAL INTO v_jobid FROM DUAL;` followed by `INSERT INTO job_queue (..., jobid, ...) VALUES (..., v_jobid, ...)`. |
| **Outcome** | Every queue row created by this procedure receives a sequence-generated job identifier before insertion. |
| **Source** | Oracle retrieval: `WCIS_DBA.submit_appworx_job` |

---

### BR-APX-006 Queue rows use a fixed master_job_number

| Field | Value |
| --- | --- |
| **Statement** | The procedure always inserts `MASTER_JOB_NUMBER = -1`. |
| **Trigger** | Queue-row insertion inside `submit_appworx_job`. |
| **Enforcement** | The `INSERT INTO job_queue` statement hard-codes `master_job_number` to `-1`. |
| **Outcome** | Rows inserted by this procedure always store the same `MASTER_JOB_NUMBER` value. |
| **Source** | Oracle retrieval: `WCIS_DBA.submit_appworx_job` |

---

### BR-APX-007 Optional arguments default to empty strings

| Field | Value |
| --- | --- |
| **Statement** | Each optional argument parameter `inarg1` through `inarg20` defaults to `''` in the procedure signature. |
| **Trigger** | A caller omits one or more optional argument parameters. |
| **Enforcement** | The procedure declaration assigns `DEFAULT ''` to every `inargN` parameter. |
| **Outcome** | The insert statement always has values available for `ARG_1` through `ARG_20`, using either caller-supplied values or the signature defaults. |
| **Source** | Oracle retrieval: `WCIS_DBA.submit_appworx_job` |

---

### BR-APX-008 NO_DATA_FOUND is ignored

| Field | Value |
| --- | --- |
| **Statement** | The procedure handles `NO_DATA_FOUND` by executing `NULL`. |
| **Trigger** | Oracle raises `NO_DATA_FOUND` during procedure execution. |
| **Enforcement** | `EXCEPTION WHEN NO_DATA_FOUND THEN NULL;` |
| **Outcome** | The procedure exits without propagating an error when `NO_DATA_FOUND` is raised. |
| **Source** | Oracle retrieval: `WCIS_DBA.submit_appworx_job` |

---

### BR-APX-009 Other exceptions are re-raised

| Field | Value |
| --- | --- |
| **Statement** | All exceptions other than `NO_DATA_FOUND` are re-raised. |
| **Trigger** | Oracle raises any exception that is caught by `WHEN OTHERS`. |
| **Enforcement** | `WHEN OTHERS THEN RAISE;` |
| **Outcome** | The original Oracle error propagates to the caller unchanged by this procedure. |
| **Source** | Oracle retrieval: `WCIS_DBA.submit_appworx_job` |

## Operations

The retrieved Oracle procedure implements the following internal operations.

| Operation | Description | Trigger |
| --- | --- | --- |
| [Allocate next job ID from so_max_jobid](#allocate-next-job-id-from-so_max_jobid) | Select the next sequence value into `v_jobid`. | Procedure execution |
| [Insert job_queue request row](#insert-job_queue-request-row) | Insert one queue row with module, requestor, fixed `MASTER_JOB_NUMBER`, generated `JOBID`, and `ARG_1` through `ARG_20`. | Successful sequence retrieval |
| [Handle exception outcomes](#handle-exception-outcomes) | Ignore `NO_DATA_FOUND` and re-raise all other exceptions. | Exception handling |

### Allocate next job ID from so_max_jobid

| Field | Value |
| --- | --- |
| **Description** | Retrieve the next value from `SO_MAX_JOBID` and store it in `v_jobid` for the queue insert. |
| **Trigger** | Start of procedure execution. |
| **Source** | Oracle retrieval: `WCIS_DBA.submit_appworx_job` |

### Insert job_queue request row

| Field | Value |
| --- | --- |
| **Description** | Insert one `JOB_QUEUE` row containing `MODULE`, `REQUESTOR`, fixed `MASTER_JOB_NUMBER = -1`, generated `JOBID`, and `ARG_1` through `ARG_20`. The retrieved body does not reference `inprinter`. |
| **Trigger** | Completion of the sequence fetch into `v_jobid`. |
| **Source** | Oracle retrieval: `WCIS_DBA.submit_appworx_job` |

### Handle exception outcomes

| Field | Value |
| --- | --- |
| **Description** | Swallow `NO_DATA_FOUND` with `NULL`; re-raise every other exception through `WHEN OTHERS`. |
| **Trigger** | Any exception raised during the procedure body. |
| **Source** | Oracle retrieval: `WCIS_DBA.submit_appworx_job` |

## Calling Code References

The following .NET code paths invoke this procedure through the library's request builder.

| Class | Method | Source File |
| --- | --- | --- |
| `clsRequestAppworxJob` | `SubmitBatchJob` (instance method) | `SAIF.Services.Appworx\clsRequestAppworxJob.vb` |
| `clsRequestAppworxJob` | `SubmitBatchJob` (shared/static overload) | `SAIF.Services.Appworx\clsRequestAppworxJob.vb` |

## Source Code

<details>
<summary>PL/SQL procedure body</summary>

```sql
PROCEDURE          submit_appworx_job (
   inmodule      IN   VARCHAR2,
   inrequestor   IN   VARCHAR2,
   inprinter     IN   VARCHAR2,
   inarg1        IN   VARCHAR2 DEFAULT '',
   inarg2        IN   VARCHAR2 DEFAULT '',
   inarg3        IN   VARCHAR2 DEFAULT '',
   inarg4        IN   VARCHAR2 DEFAULT '',
   inarg5        IN   VARCHAR2 DEFAULT '',
   inarg6        IN   VARCHAR2 DEFAULT '',
   inarg7        IN   VARCHAR2 DEFAULT '',
   inarg8        IN   VARCHAR2 DEFAULT '',
   inarg9        IN   VARCHAR2 DEFAULT '',
   inarg10       IN   VARCHAR2 DEFAULT '',
   inarg11       IN   VARCHAR2 DEFAULT '',
   inarg12       IN   VARCHAR2 DEFAULT '',
   inarg13       IN   VARCHAR2 DEFAULT '',
   inarg14       IN   VARCHAR2 DEFAULT '',
   inarg15       IN   VARCHAR2 DEFAULT '',
   inarg16       IN   VARCHAR2 DEFAULT '',
   inarg17       IN   VARCHAR2 DEFAULT '',
   inarg18       IN   VARCHAR2 DEFAULT '',
   inarg19       IN   VARCHAR2 DEFAULT '',
   inarg20       IN   VARCHAR2 DEFAULT ''
)
AS
   v_jobid   NUMBER;

BEGIN
   SELECT so_max_jobid.NEXTVAL
     INTO v_jobid
     FROM DUAL;

   INSERT INTO job_queue
               (module,
                requestor,
                master_job_number,
                jobid,
                arg_1,
                arg_2,
                arg_3,
               arg_4,
                arg_5,
                arg_6,
                arg_7,
                arg_8,
               arg_9,
                arg_10,
                arg_11,
                arg_12,
               arg_13,
                arg_14,
               arg_15,
               arg_16,
               arg_17,
              arg_18,
              arg_19,
              arg_20)
        VALUES (inmodule,
                inrequestor,
                                -1,
                                v_jobid,
                                inarg1,
                                inarg2,
                                inarg3,
                                inarg4,
                                inarg5,
                                inarg6,
                                inarg7,
                                inarg8,
                                inarg9,
                                inarg10,
                                inarg11,
                                inarg12,
                                inarg13,
                                inarg14,
                                inarg15,
                                inarg16,
                                inarg17,
                                inarg18,
                                inarg19,
                                inarg20);
EXCEPTION
   WHEN NO_DATA_FOUND
   THEN
      NULL;
   WHEN OTHERS
   THEN
      -- Consider logging the error and then re-raise
      RAISE;
END submit_appworx_job;
```

</details>

## Related Documentation
- [Procedure catalog](index.md)
- [Business rules](../business-rules.md)
- [Operations and processes](../operations-processes.md)
- [SQL catalog](../sql/index.md)

## Sources
- Oracle retrieval: `C:\Users\chrfre\AppData\Local\Temp\oracle-sources\submit_appworx_job.json`
- `SAIF.Services.Appworx\clsRequestAppworxJob.vb`
